import tensorflow as tf


def sep(label=''):
    print('-' * 32, label, '-' * 32, sep='')


# 1.	定义变量a，值为[[1,3,5],[3,6,9]] （8分）
sep('1.	定义变量a，值为[[1,3,5],[3,6,9]]')
a = tf.Variable([[1,3,5],[3,6,9]])
print(a)
print(a.shape)

# 2.	定义变量b，值为[[2,7],[3,8],[2,6]] （8分）
sep('2.	定义变量b，值为[[2,7],[3,8],[2,6]]')
b = tf.Variable([[2,7],[3,8],[2,6]])
print(b)
print(b.shape)

# 3.	定义a数字乘以3的操作（8分）
sep('3.	定义a数字乘以3的操作')
a_mul_3 = a * tf.constant(3)
print(a_mul_3)

# 4.	定义a矩阵乘以矩阵b的操作（8分）
sep('4.	定义a矩阵乘以矩阵b的操作')
a_matmul_b = tf.matmul(a, b)
print(a_matmul_b)

# variable
result = tf.Variable(1, dtype=tf.int32)

# 5.	创建Session对象（8分）
sep('5.	创建Session对象')
with tf.compat.v1.Session() as sess:

    # 6.	执行全局变量初始化（8分）
    sep('6.	执行全局变量初始化')
    sess.run(tf.compat.v1.global_variables_initializer())

    # 7.	输出变量a的值（8分）
    sep('7.	输出变量a的值')
    print(sess.run(a))

    # 8.	输出变量b的值（8分）
    sep('8.	输出变量b的值')
    print(sess.run(b))

    # 9.	执行a数字乘以3的操作，输出结果（8分）
    sep('9.	执行a数字乘以3的操作，输出结果')
    print(sess.run(a_mul_3))

    # 10.	执行a矩阵乘以矩阵b的操作，输出结果（8分）
    sep('10.	执行a矩阵乘以矩阵b的操作，输出结果')
    print(sess.run(a_matmul_b))

    # 11.	完成数字10以内的奇数的阶乘运算，输出每个步骤的结果。（每个步骤5分，至少4个步骤，共20分）
    sep('11.	完成数字10以内的奇数的阶乘运算，输出每个步骤的结果')
    for i in range(1, 10, 2):
        sess.run(tf.compat.v1.assign(result, tf.multiply(result, i)))
        print(sess.run(result))
